<?php
/**
 * Created by PhpStorm.
 * User: lyq
 * Date: 2018/9/18
 * Time: 下午1:40
 */

namespace app\common\model;

use think\Db;
use think\Exception;

class UserBackstage extends CommonBackstage
{

    /**
     * 注册用户（后台）
     * 平台后台 商会后台 添加会员 或 批量导入会员
     *
     * @param int $bussiness_id 所属商会id
     * @param int $department_id 所属商会下组织部门id
     * @param int $duties_id 职务id
     * @param int $industry_id 行业id
     * @param string $mobile 手机号
     * @param string $real_name 姓名
     * @param string $password 密码
     * @param string $email 邮箱
     * @param string $avatar 头像地址
     * @param string $abstract 个人简介
     * @param string $server 服务内容
     * @param string $honor 个人荣誉
     * @return array
     */

    static public function register($bussiness_id,$department_id,$duties_id,$industry_id,$mobile,$real_name,$password,$email='',$avatar='',$abstract='',$server='',$honor=''){
        if(empty($bussiness_id)){
            return parent::returnError('所属商会不能为空');
        }
        if(empty($department_id)){
            return parent::returnError('所属组织部门不能为空');
        }

        $depart = Db::name('department')
            ->where('bussiness_id',$bussiness_id)
            ->where('id',$department_id)
            ->find();
        if(!$depart){
            return parent::returnError('组织部门不存在或与商会不匹配');
        }
        if(empty($duties_id)){
            return parent::returnError('所属职务不能为空');
        }

        $duties = Db::name('duties')->where('id',$duties_id)->find();
        if(!$duties){
            return parent::returnError('此职务不存在');
        }

        if($duties_id==1){
            $count = Db::name('user')
                ->where('bussiness_id',$bussiness_id)
                ->where('duties_id',$duties_id)
                ->count();
            if($count>=1){
                return parent::returnError('该会员'.$mobile.'职务不允许为【会长】，该商会已存在会长，会长必须唯一');
            }
        }

        if(empty($industry_id)){
            return parent::returnError('从事行业不能为空');
        }
        if(empty($mobile)){
            return parent::returnError('手机号不能为空');
        }
        if(!verify_mobile($mobile)){
            return parent::returnError('手机号格式有误');
        }
        $coutn_mobile = Db::name('user')
            ->where('mobile',$mobile)
            ->count();
        if($coutn_mobile){
            return parent::returnError('该手机号'.$mobile.'已注册会员禁止重复');
        }

        if(empty($real_name)){
            return parent::returnError('姓名不能为空');
        }
        if(empty($password)){
            return parent::returnError('密码不能为空');
        }

        try
        {
            $data = [
                'bussiness_id'=>$bussiness_id,
                'department_id'=>$department_id,
                'duties_id'=>$duties_id,
                'industry_id'=>$industry_id,
                'mobile'=>$mobile,
                'real_name'=>$real_name,
                'password'=>md5($password),
                'email'=>$email,
                'avatar'=>$avatar,
                'abstract'=>$abstract,
                'server'=>$server,
                'honor'=>$honor,
                'identity'=>1,//默认游客
                'in_blacklist'=>0,//不拉黑
                'is_union'=>0,//否联盟商
                'create_time'=>now_datetime(),
                'update_time'=>now_datetime(),
            ];

            $add = Db::name('user')
                ->insert($data);
            if($add){
                return parent::returnSuccess('会员添加成功');
            }else{
                return parent::returnError('数据库繁忙，添加失败');
            }

        }
        catch (Exception $exception)
        {
            return parent::returnError($exception->getMessage());
        }

    }

    /**
     * 编辑会员（后台）
     * 平台后台 商会后台 编辑会员
     *
     * @param array $where update执行条件
     * @param int $id 会员id
     * @param int $bussiness_id 所属商会id
     * @param int $department_id 所属商会下组织部门id
     * @param int $duties_id 职务id
     * @param int $industry_id 行业id
     * @param string $mobile 手机号 暂时不允许修改先放着
     * @param string $real_name 姓名
     * @param string $password 密码
     * @param string $email 邮箱
     * @param string $avatar 头像地址
     * @param string $abstract 个人简介
     * @param string $server 服务内容
     * @param string $honor 个人荣誉
     * @return array
     */

    static public function edit($where,$id,$bussiness_id,$department_id,$duties_id,$industry_id,$mobile,$real_name,$password='',$email='',$avatar='',$abstract='',$server='',$honor=''){
        if(!$where){
            return parent::returnError('执行条件不能为空');
        }
        if(empty($id)){
            return parent::returnError('会员ID不能为空');
        }
        if(empty($bussiness_id)){
            return parent::returnError('所属商会不能为空');
        }
        if(empty($department_id)){
            return parent::returnError('所属组织部门不能为空');
        }

        $depart = Db::name('department')
            ->where('bussiness_id',$bussiness_id)
            ->where('id',$department_id)
            ->find();
        if(!$depart){
            return parent::returnError('组织部门不存在或与商会不匹配');
        }
        if(empty($duties_id)){
            return parent::returnError('所属职务不能为空');
        }

        $duties = Db::name('duties')->where('id',$duties_id)->find();
        if(!$duties){
            return parent::returnError('此职务不存在');
        }

        if($duties_id==1){
            $count = Db::name('user')
                ->where('bussiness_id',$bussiness_id)
                ->where('id','neq',$id)
                ->where('duties_id',$duties_id)
                ->count();
            if($count>=1){
                return parent::returnError('该会员'.$mobile.'职务不允许为【会长】，该商会已存在会长，会长必须唯一');
            }
        }

        if(empty($industry_id)){
            return parent::returnError('从事行业不能为空');
        }
//暂时不允许修改手机号
//        if(empty($mobile)){
//            return parent::returnError('手机号不能为空');
//        }
//
//        $coutn_mobile = Db::name('user')
//            ->where('mobile',$mobile)
//            ->where('id','neq',$id)
//            ->count();
//        if($coutn_mobile){
//            return parent::returnError('该手机号'.$mobile.'已注册会员禁止重复');
//        }

        if(empty($real_name)){
            return parent::returnError('姓名不能为空');
        }

        try
        {
            $data = [
                'bussiness_id'=>$bussiness_id,
                'department_id'=>$department_id,
                'duties_id'=>$duties_id,
                'industry_id'=>$industry_id,
                //'mobile'=>$mobile,
                'real_name'=>$real_name,
                'email'=>$email,
                'avatar'=>$avatar,
                'abstract'=>$abstract,
                'server'=>$server,
                'honor'=>$honor,
                'update_time'=>now_datetime(),
            ];

            if(!empty($password)){
                $data['password'] = md5($password);
            }

            $save = Db::name('user')
                ->where($where)
                ->update($data);
            if($save){
                return parent::returnSuccess('会员编辑成功');
            }else{
                return parent::returnError('数据库繁忙，编辑失败');
            }

        }
        catch (Exception $exception)
        {
            return parent::returnError($exception->getMessage());
        }

    }
}